package ao.com.bna.controle;

import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import ao.com.bna.beans.Transgressor;
import ao.com.bna.dao.TransgressorDao;
import ao.com.bna.util.BeanFactory;

/**
 * @see ManagedBean para manipular dados da pagina xhtml
 */
@ManagedBean(name="transgressor")
@SessionScoped
public class TransgressorControle {

	private Transgressor transgressorEntity = new Transgressor();

	private TransgressorDao transgressorDao = (TransgressorDao) BeanFactory.getBean("transgressorDao", TransgressorDao.class);
	private DataModel model;

	
	/**
	 * @see Metodo ListaTransgressor retorna todos os Transgressor.
	 */
	public DataModel getListaTransgressores() {
        model = new ListDataModel(transgressorDao.listar());
        return model;

    }

	
	/**
	 * @see Metodo salvarTransgressor
	 */
	 public String salvarTransgressor() {
	        String s = "listaTransgressor";
	        try {
	        	
	        	transgressorDao.gravar(transgressorEntity);
	        	
		        transgressorEntity.setDataNascimento(null);
		        transgressorEntity.setNome("");
		        transgressorEntity.setEndereco("");
		        transgressorEntity.setNacionalidade("");
		        transgressorEntity.setTelefone("");
		        transgressorEntity.setLocalizacaoCarta("");
		        transgressorEntity.setProcurador("");
		        transgressorEntity.setNomerepresentante("");

	            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"SALVOU COM SUCESSO","Transgressor"));

	        } catch (Exception e) {
	            e.printStackTrace();
	            s = "falhou";
	            // mostrar o erro no faces
	            String msg = e.getCause().toString();
	            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,msg,"Transgressor"));

	        }
	        return s;
	    }

	
	     /**
		 * @see Metodo navegaCriarTransgressor vai para pagina criarTransgressor.xhtml
		 */
	 public String navegaCriarTransgressor() {
	        String t = "criaTransgressor";
	        
	        transgressorEntity.setDataNascimento(null);
	        transgressorEntity.setNome("");
	        transgressorEntity.setEndereco("");
	        transgressorEntity.setNacionalidade("");
	        transgressorEntity.setTelefone("");
	        transgressorEntity.setLocalizacaoCarta("");
	        transgressorEntity.setProcurador("");
	        transgressorEntity.setNomerepresentante("");

	        // retorna o nome da pagina Criar Transgressor
	        return t;

	    }

	 /**
      * @see Metodo editarTransgressor 
	 */
	 public String editarTransgressor() {
	        String r = "listaTransgressor";
	        try {
	        	transgressorDao.actualiza(transgressorEntity);
	            

	           FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"EDITOU COM SUCESSO","Transgressor"));

	        } catch (Exception e) {
	            e.printStackTrace();
	            r = "falhou";
	            // mostrar o erro no faces
	            String msg = e.getCause().toString();
	            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,msg,"Transgressor"));

	        }
	        return r;
	    }


	 /**
      * @see Metodo navegaEditarTransgressor vai a pagina editarTransgressor.xhtml 
	 */
     public String navegaEditarTransgressor() {
    	 
    FacesContext context = FacesContext.getCurrentInstance();
    Map requestParameterMap = (Map) context.getExternalContext().getRequestParameterMap();
    // aqui tem que ser long porque o inteiro que ele recebe e do tipo long
    // o valor do get tem q ser igual ao valor d f:param na pagina listaTransgressor.xhtml
    Long idTransgressor = Long.parseLong(requestParameterMap.get("idTransgressor").toString());
//    this.user = userDao.getUser(userId);
    this.transgressorEntity= transgressorDao.obterPorID(idTransgressor);
   
    return "editarTransgressor";
     }
     
     /**
      * @see Metodo apagarTransgressor 
	 */
     public String apagarTransgressor() {
	        String r = "listaTransgressor";
	        try {
	        	transgressorDao.remover(transgressorEntity);
	            
	           FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"APAGOU COM SUCESSO","Transgressor"));

	        } catch (Exception e) {
	            e.printStackTrace();
	            r = "falhou";
	            // mostrar o erro no faces
	            String msg = e.getCause().toString();
	            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,msg,"Transgressor"));

	        }
	        return r;
	    }
    
     
     /**
      * @see Metodo navegaApagarTransgressor 
	 */
    public String navegaApagarTransgressor() {
   	 
        FacesContext context = FacesContext.getCurrentInstance();
        Map requestParameterMap = (Map) context.getExternalContext().getRequestParameterMap();
        // aqui tem que ser long porque o inteiro que ele recebe e do tipo long
        // o valor do get tem q ser igual ao valor d f:param na pagina listaTransgressor.xhtml
        Long idTransgressor = Long.parseLong(requestParameterMap.get("idTransgressor").toString());
        // this.user = userDao.getUser(userId);
        this.transgressorEntity= transgressorDao.obterPorID(idTransgressor);
       
        return "apagarTransgressor";
}


	public Transgressor getTransgressorEntity() {
		return transgressorEntity;
	}
	public void setTransgressorEntity(Transgressor transgressorEntity) {
		this.transgressorEntity = transgressorEntity;
	}
	
	
	
	public TransgressorDao getTransgressorDao() {
		return transgressorDao;
	}
	public void setTransgressorDao(TransgressorDao transgressorDao) {
		this.transgressorDao = transgressorDao;
	}
	
	
	
	
}
